import functools
import logging

from aweirunner.utils import parser

# from fastrunner.utils import parser

logging.basicConfig(level=logging.DEBUG)
#  创建了一个日志记录器对象。__name__ 表示使用当前模块的名称作为日志记录器的名称。
logger = logging.getLogger(__name__)


# 装饰器函数
def request_log(level):
    """
    记录请求日志
    :param level:
    :return:
    """


    def wrapper(func):
        # 用于确保被装饰函数的元信息得以保留。元信息包括函数的名称、文档字符串（docstring）、模块信息
        @functools.wraps(func)
        def inner_wrapper(request, *args, **kwargs):
            msg_data = "处理数据之前:\n{data}".format(
                data=parser.format_json(value=request.data)
            )
            msg_params = "请求参数params:\n{params}".format(
                params=parser.format_json(value=request.query_params)
            )

            if level == "INFO":
                if request.data:
                    logger.info(msg_data)
                if request.query_params:
                    logger.info(msg_params)
            elif level == "DEBUG":
                if request.data:
                    logger.debug(msg_data)
                if request.query_params:
                    logger.debug(msg_params)
            return func(request, *args, **kwargs)

        return inner_wrapper

    return wrapper
